Storage systems are required to store vast amounts of data and to permit the storage capacity to scale over time. The traditional approach to scaling storage capacity is to include one or more dedicated metadata servers in combination with one or more storage servers in a storage pool. The storage servers store the client data and the metadata servers store metadata (but no client data) about the location of the client data within the storage servers. As the storage capacity requirements increase, the number of storage servers may be increased and the amount of metadata stored in the metadata servers may increase.
In such scenarios, the metadata servers become a bottleneck in the processing of I/O requests. As such, the aforementioned traditional approach is unable to efficiently scale a storage pool without impacting performance, namely, latency, related to the processing of I/O requests.